home *** CD-ROM | disk | FTP | other *** search
- 1 POKE53280,0:POKE53281,0:PRINTCHR$(8):POKE53272,20
- 2 PRINT"[147]HUMPTY SOFTWARE CHARACTER SET COMPRESSOR"
- 3 PRINT"(C) AND WRITTEN HUMPTY DAMIEN MARSH 1988"
- 4 PRINT"FOR USE BY HUMPTY SOFTWARE PERSONAL ONLY"
- 5 PRINT"CHAR.SET SHOULD ALREADY HAVE BEEN LOADED"
- 6 PRINT"WHAT MEMORY POSITION DOES THE SET BEGIN?"
- 7 GOSUB50:IFA<6000ORA>53000OR(A>40000ANDA<49000)ORA/2048<>INT(A/2048)THEN7
- 8 S=A:PRINT"LAST CHAR.IN SET IS CHAR.NO. (INCLUSIVE)"
- 9 GOSUB50:IFA<2ORA>255THEN9
- 10 L=A:PRINT"SCANNING SET FOR DUPLICATES. PLEASE WAIT"
- 11 DIMC(L),D(L),E(L):C(0)=256:E=0:FORI=1TOL:FORJ=0TOI-1:F=0
- 12 FORK=0TO7:IFPEEK(S+I*8+K)<>PEEK(S+J*8+K)THENF=1
- 13 NEXT:ONFGOTO14:C(I)=J:J=I:GOTO15
- 14 C(I)=256:E=1
- 15 NEXT:NEXT:IFE=0THENPRINT"SORRY, THERE'S NO DUPLICATES IN CHAR.SET":GOTO49
- 16 PRINT"SCAN COMPLETE. TABLE OF DUPLICATES READY"
- 17 PRINT"PRINT TABLE OF DUPLICATES ON THE SCREEN?"
- 18 GOSUB51:ON1-(A$="N")-(2*(A$="Y"))GOTO18,19:F=1:GOSUB52
- 19 PRINT"LIST TABLE OF DUPLICATES TO THE PRINTER?"
- 20 PRINT"IF 'Y' THEN ENSURE THAT PRINTER IS READY"
- 21 GOSUB51:ON1-(A$="N")-(2*(A$="Y"))GOTO21,23:F=0:OPEN1,4:CMD1:GOSUB52
- 22 PRINTCHR$(13)
- 23 CLOSE1:OPEN3,3:CMD3:PRINT"OPTIONS: (Q)UIT NOW,(D)ELETE DUPLICATES,"
- 24 PRINT"[145](C)OMPRESS CHARSET. PRESS (Q),(D) OR (C)"
- 25 GOSUB51:ON((A$="Q")*-1)+((A$="D")*-2)+((A$="C")*-3)+1GOTO25,49,26,34
- 26 PRINT"NUMBER TO FILL DELETED CHARACTERS WITH ?"
- 27 GOSUB50:IFA<0ORA>255THEN28
- 28 PRINT"FILLING DUPLICATES WITH THE ABOVE NUMBER"
- 29 F=A:FORI=0TOL:IFC(I)<256THENFORJ=0TO7:POKES+I*8+J,F:NEXT
- 30 NEXT:PRINT"COMPLETE. DUPLICATES ARE NOW ALL DELETED"
- 31 FORI=0TOL:IFC(I)<256THEND(I)=C(I):GOTO33
- 32 D(I)=I
- 33 NEXT:GOTO43
- 34 PRINT"REMOVING DUPLICATES AND COMPRESSING SET.":Z=0:D(0)=0
- 35 Z=Z+1:D(Z)=Z:IFC(Z)=256THEN35
- 36 J=Z:FORI=ZTOL:FORK=0TO7:POKE14336+J*8+K,PEEK(14336+I*8+K):NEXT
- 37 IFC(I)=256THEND(I)=J:J=J+1:GOTO39
- 38 D(I)=D(C(I))
- 39 NEXT:L1=J-1:PRINT"COMPLETE. NUMBER TO FILL EXCESS CHARS ?"
- 40 GOSUB50:IFA<0ORA>255THEN40
- 41 Z=A:FORI=S+L1*8TOS+2047:POKEI,Z:NEXT
- 42 PRINT"COMPLETE. THERE ARE NOW"L1"CHARS USED."
- 43 PRINT"LIST OLD CHARS/NEW CHARS TABLE TO SCREEN"
- 44 GOSUB51:ON1-(A$="N")-(2*(A$="Y"))GOTO44,45:F=1:GOSUB60
- 45 PRINT"LIST OLD CHAR/NEW CHAR TABLE TO PRINTER?"
- 46 GOSUB51:ON1-(A$="N")-(2*(A$="Y"))GOTO46,48:F=0:OPEN1,4:CMD1:GOSUB60
- 47 PRINTCHR$(13):CLOSE1:CLOSE3:OPEN3,3:CMD3
- 48 PRINT"I SUGGEST THAT YOU SAVE YOUR NEW SET NOW"
- 49 PRINT"[145][155]":END
- 50 GOSUB51:A=VAL(A$)-((A$="0")/10):ON-(A=0)GOTO50:A=INT(A):RETURN
- 51 POKE19,2:PRINT"[145]>";:INPUTA$:POKE19,0:PRINT:RETURN
- 52 PRINT:GOSUB58
- 53 FORI=0TOL:PRINTITAB(20):IFC(I)=256THENPRINT"*****":GOTO55
- 54 PRINTC(I)
- 55 IFPEEK(214)=24ANDF=1THENWAIT198,1:POKE198,0:GOSUB58
- 56 NEXT:IFF=1ANDPEEK(214)>17THENWAIT198,1:POKE198,0
- 57 RETURN
- 58 IFFTHENPRINT"[147]";
- 59 PRINT"CHARACTER NUMBER"SPC(4)"IS IDENTICAL TO":PRINT:RETURN
- 60 PRINT:GOSUB65
- 61 FORI=0TOL:PRINTITAB(20)D(I)
- 62 IFPEEK(214)=24ANDF=1THENWAIT198,1:POKE198,0:GOSUB65
- 63 NEXT:IFF=1ANDPEEK(214)>19THENWAIT198,1:POKE198,0
- 64 RETURN
- 65 IFFTHENPRINT"[147]";
- 66 PRINT"OLD CHARSET"SPC(9)"NEW CHARSET":PRINT:RETURN
-